package com.shixianchen.study.day5;

import com.shixianjun.sort.Sortable;
import com.shixianjun.sort.SortableElement;

/**
 * @program: algorithm
 * @description: 插入排序
 * @author: SXC
 * @create: 2022-11-08 14:45
 **/
public class InsertSort implements Sortable {

    @Override
    public void sort(SortableElement[] arr) {
        //默认一个数据就是有序的
        for (int i = 1; i < arr.length; i++) {
            //要插入的元素
            SortableElement insertValue = arr[i];

            int j = i -1;

            //从右向左比较元素的同时，进行元素复制
            for (; j >= 0 && insertValue.value < arr[j].value ; j--){
                arr[j+1] = arr[j];
            }
            arr[j+1] = insertValue;
        }
    }



}
